#include <iostream>
#include <vector>

using byte = unsigned char;
using byte_ptr = unsigned char *;
using array_t = int[10];
using fn = void(byte, double);

void func(byte b, double d) { /*...*/ }

void test_variable_alias() {
  byte b{22};
  byte_ptr pb = new byte[10]{0};
  array_t a{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
  fn *f = func;
}

// template <class T> class custom_allocator {
//   /*...*/
// };
//
// template <typename T> using vec_t = std::vector<T, custom_allocator<T>>;
//
// void test_template_alias() {
//   vec_t<int> vi;
//   vec_t<std::string> vs;
// }

int main(int argc, char *argv[]) {
  std::cout << "==== ch01 p02 ====" << std::endl;
  test_variable_alias();
  return 0;
}
